package com.d3works.apps.account.service.moveline;

import com.d3works.apps.account.db.AnalyticMoveLine;
import com.d3works.apps.account.db.MoveLine;
import com.d3works.apps.base.db.Company;
import com.d3works.exception.D3worksException;
import java.math.BigDecimal;
import java.util.List;

public interface MoveLineComputeAnalyticService {

  MoveLine computeAnalyticDistribution(MoveLine moveLine);

  MoveLine createAnalyticDistributionWithTemplate(MoveLine moveLine);

  void updateAccountTypeOnAnalytic(MoveLine moveLine, List<AnalyticMoveLine> analyticMoveLineList);

  void generateAnalyticMoveLines(MoveLine moveLine);

  MoveLine selectDefaultDistributionTemplate(MoveLine moveLine) throws D3worksException;

  MoveLine analyzeMoveLine(MoveLine moveLine, Company company) throws D3worksException;

  public BigDecimal getAnalyticAmount(MoveLine moveLine, AnalyticMoveLine analyticMoveLine);

  MoveLine clearAnalyticAccounting(MoveLine moveLine);

  boolean checkManageAnalytic(Company company) throws D3worksException;
}
